package com.hippo.javacore.javaiostream.iostream;

import java.io.FileWriter;

/**
 * @ClassName FileWriterOpt
 * @Description TODO 文件字符输出流操作
 * @Author tangxl
 * @create 2023-04-06 18:23
 **/
public class FileWriterOpt {
    public static void main(String[] args) {
        // TODO 文件字符输出流操作
        // 1.文件字符输出流：写入单个字符
        // 2.文件字符输出流：写入字符数组
        // 3.文件字符输出流：写入字符数组的一部分

        // 1.文件字符输出流：写入单个字符
        // 1.1 创建FileWriter对象，构造方法中绑定要写入数据的目的地
        // 1.2 使用FileWriter对象中的方法write，把数据写入到内存缓冲区中（字符转换为字节的过程）
        // 1.3 使用FileWriter对象中的方法flush，把内存缓冲区中的数据，刷新到文件中
        // 1.4 释放资源（会先把内存缓冲区中的数据刷新到文件中）
        try(
                FileWriter fw = new FileWriter("study-commons/java-file-iostream/src/main/resources/file/a.txt",true)
        ){
            fw.write(97); // 写入单个字符
            fw.write('a'); // 写入单个字符
            fw.write('林'); // 写入单个字符
            fw.write('\r');
            fw.write('\n');// 写入换行符
            fw.flush(); // 刷新缓冲区
        }catch (Exception e) {
            e.printStackTrace();
        }

        // 2.文件字符输出流：写入字符数组
        // 2.1 创建FileWriter对象，构造方法中绑定要写入数据的目的地
        // 2.2 使用FileWriter对象中的方法write，把数据写入到内存缓冲区中（字符转换为字节的过程）
        // 2.3 使用FileWriter对象中的方法flush，把内存缓冲区中的数据，刷新到文件中
        // 2.4 释放资源（会先把内存缓冲区中的数据刷新到文件中）
        try(
                FileWriter fw = new FileWriter("study-commons/java-file-iostream/src/main/resources/file/a.txt",true)
        ){
            char[] buffer = {'a', 'b', 'c', 'd', 'e','\r','\n'}; // 字符数组
            fw.write(buffer); // 写入字符数组
            fw.write(buffer, 1, 3); // 写入字符数组的一部分,从索引1开始，写入3个字符
            fw.write("\r\n");// 写入换行符
            fw.flush(); // 刷新缓冲区
        }catch (Exception e) {
            e.printStackTrace();
        }

        // 3.文件字符输出流：写入字符串
        // 3.1 创建FileWriter对象，构造方法中绑定要写入数据的目的地
        // 3.2 使用FileWriter对象中的方法write，把数据写入到内存缓冲区中（字符转换为字节的过程）
        // 3.3 使用FileWriter对象中的方法flush，把内存缓冲区中的数据，刷新到文件中
        // 3.4 释放资源（会先把内存缓冲区中的数据刷新到文件中）
        try(
                FileWriter fw = new FileWriter("study-commons/java-file-iostream/src/main/resources/file/a.txt",true)
        ){
            String str = "林青霞";
            fw.write(str); // 写入字符串
            fw.write("\r\n");// 写入换行符
            fw.write(str, 1, 2); // 写入字符串的一部分,从索引1开始，写入2个字符
            fw.write("\r\n");// 写入换行符
            fw.flush(); // 刷新缓冲区
        }catch (Exception e) {
            e.printStackTrace();
        }


    }
}
